home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 551-575 / disk_563 / m2midi / midisupport.mod < prev    next >
Text File  |  1992-05-06  |  2KB  |  69 lines

  1. (***************************************************************************
  2.   :Program.       MidiSupport.mod
  3.   :Author.        Jürgen Zimmermann
  4.   :Address.       Ringstraße 6, W-6719 Altleiningen, Germany
  5.   :Phone.         06356/1456
  6.   :ShortCut.      [JnZ]
  7.   :Support.       -
  8.   :Version.       1.1
  9.   :Date.          8. May 1991
  10.   :Copyright.     PD
  11.   :Language.      MODULA-2
  12.   :Translator.    M2Amiga 4.0d
  13.   :Contents.      Modula-2-implementation of the original "C-Midi-Macros"
  14.   :Contents.      "midi.library" of Fish 227, c-functions in "MidiSupport"!
  15.   :Imports.       "midi.library" V2.0 in the LIBS:-directory
  16.   :Remark.        I want to get into contact with other users of the
  17.   :Remark.        "midi.library" or MIDI-programmers.
  18.   :Remark.        (If you have a new version of the library, please send
  19.   :Remark.        it to me!)
  20.   :Usage.         described in the documents of "midi.library"
  21. ****************************************************************************)
  22.  
  23. IMPLEMENTATION MODULE MidiSupport;
  24.  
  25.  
  26. PROCEDURE MidiHiByte(data: CARDINAL): SHORTCARD;
  27.    (* pack high bytes of a word into midi format (7/14 bit math) *)
  28.  
  29.    BEGIN
  30.       RETURN (SHORTCARD(data DIV 128));
  31.    END MidiHiByte;
  32.  
  33.  
  34. PROCEDURE MidiLoByte(data: CARDINAL): SHORTCARD;
  35.    (* pack low bytes of a word into midi format (7/14 bit math) *)
  36.  
  37.    BEGIN
  38.       RETURN (SHORTCARD(data MOD 128));
  39.    END MidiLoByte;
  40.  
  41.  
  42. PROCEDURE MidiWord(hi,lo: SHORTCARD): CARDINAL;
  43.    (* unpack 2 midi bytes into a word (7/14 bit math) *)
  44.  
  45.    BEGIN
  46.       RETURN (CARDINAL(hi) * 128 + CARDINAL(lo));
  47.    END MidiWord;
  48.  
  49.  
  50. PROCEDURE SplitMidiID(    id         : LONGCARD;
  51.                       VAR id0,id1,id2: SHORTCARD);
  52.    (* unpack a 3 byte sys/ex id into single bytes for argument
  53.       lists and RIMatch initializers *)
  54.  
  55.    BEGIN
  56.       id0:=(SHORTCARD(id DIV 65536));
  57.       id1:=(SHORTCARD((id DIV 256) MOD 256));
  58.       id2:=(SHORTCARD(id MOD 256));
  59.    END SplitMidiID;
  60.  
  61.  
  62. PROCEDURE MakeMidiID(id0,id1,id2: SHORTCARD): LONGCARD;
  63.     (* make a 3 byte sys/ex id from three single bytes *)
  64.  
  65.    BEGIN
  66.       RETURN ((LONGCARD(id0) * 65536) + (LONGCARD(id1) * 256) + LONGCARD(id2));
  67.    END MakeMidiID;
  68. END MidiSupport.
  69.